--redis实现分布式锁的解锁

-- 变量声明部分 -------

local lockKey = KEYS[1]
local stateKey = KEYS[2]
local tryToken = ARGV[1]

-- 逻辑部分 ----------

if redis.call("get", lockKey) == tryToken then
    -- 该锁被当前线程持有
    if redis.call("decr", stateKey) == 0 then
        redis.call("del", lockKey)
        redis.call("del", stateKey)
        -- 返回true表示锁被完全释放
        return true
    end
end
-- 返回false，表示解锁失败或者锁未完全释放
return false